/**
 * @(#)UbicacionK.java Jan 15, 2007
 *
 * Copyright (c) 2005-2010 Psiqueware S.A. de C.V. All Rights Reserved.
 * This software is the proprietary information Psiqueware S.A. de C.V.
 * Use is subject to license terms.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *
 * <br/>Usuario : Psique
 * <br/>Creaci&oacute;n: Jan 15, 2007 - 9:20:42 AM
 * <br/>
 * <br/>
 * <br/><t5>Cambios :</t5>
 * <br/><b>Fecha | Autor  |  Cambios</b>
 * <ul>
 * <li>Jan 15, 2007 | <a href = "mailto:AngelElectrico@PsiqueWare.com">Psique</a> | Creaci&oacute;n del Objeto.</li>
 *
 * </ul>
 */

package com.psiqueware.jazmin.empresas.recursos.materiales.modelo;

import com.psiqueware.alheli.basico.BaseObject;
import com.psiqueware.manzanilla.informacion.documentos.Documento;
import com.psiqueware.tulipan.ubicaciones.Direccion;
import com.psiqueware.tulipan.organizacional.Estructura;
import com.psiqueware.jazmin.empresas.recursos.materiales.Ubicacion;

/**
 * Lugar donde se realiza un Trabajo.
 * <br/>Paquete Original: com.psiqueware.tulipan.empresas.modelo
 * <br/>Nombre  Original: UbicacionK
 * <br/>Oprima para ver : <a href="UbicacionK.java.html"><i>C&oacute;digo Fuente</i> </a>
 *
 * @author <a href="mailto:AngelElectrico@PsiqueWare.com">Psique</a>
 * @version Revision: 1.1 Jan 15, 2007 9:20:42 AM
 * @noinspection ClassWithoutLogger
 */
public class UbicacionK extends BaseObject implements Ubicacion
{

    /** Clave de esta {@link Ubicacion}. Este campo lo llena el usuario y es informativo. */
    private String m_clave;

    /** Nombre descriptivo de esta {@link Ubicacion}. Este campo lo llena el usuario y es informativo. */
    private Documento m_descripcion;

    /**
     * {@link Direccion} a la que apunta esta {@link Ubicacion}. Puede ser <code>null</code>.
     */
    private Direccion m_direccion;

    /**
     * Identificador de la {@link Estructura} que tiene dada de alta esta {@link Ubicacion}.
     */
    private Long m_idEstructura;

    /** Constructor de UbicacionK. */
    public UbicacionK ()
    { }

    /** Constructor de UbicacionK. */
    public UbicacionK ( final String clave, final Documento descripcion, final Direccion direccion, final Estructura empresa )
    {
        m_direccion = direccion;
        m_descripcion = descripcion;
        m_clave = clave;
        m_idEstructura =empresa.getId ();
    }


    /**
     * Devuelve el Clave de esta {@link Ubicacion}. Este campo lo llena el usuario y es informativo.
     *
     * @return valor de 'clave'.
     *
     * @see String
     */
    public String getClave ()
    {
        return m_clave;
    }

    /**
     * Establece el Clave de esta {@link Ubicacion}. Este campo lo llena el usuario y es informativo.
     *
     * @param clave nuevo valor para 'clave'.
     *
     * @see String
     */
    public void setClave ( final String clave )
    {
        m_clave = clave;
    }

    /**
     * Devuelve el Nombre descriptivo de esta {@link Ubicacion}. Este campo lo llena el usuario y es informativo.
     *
     * @return valor de 'descripcion'.
     *
     * @see Documento
     */
    public Documento getDescripcion ()
    {
        return m_descripcion;
    }

    /**
     * Establece el Nombre descriptivo de esta {@link Ubicacion}. Este campo lo llena el usuario y es informativo.
     *
     * @param descripcion nuevo valor para 'descripcion'.
     *
     * @see Documento
     */
    public void setDescripcion ( final Documento descripcion )
    {
        m_descripcion = descripcion;
    }


    /**
     * Devuelve el {@link Direccion} a la que apunta esta {@link Ubicacion}. Puede ser <code>null</code>.
     * @return valor de 'direccion'.
     * @see Direccion
     */
    public Direccion getDireccion ()
    {
        return m_direccion;
    }

    /**
     * Establece el {@link Direccion} a la que apunta esta {@link Ubicacion}. Puede ser <code>null</code>.
     * @param direccion nuevo valor para 'direccion'.
     * @see Direccion
     */
    public void setDireccion ( final Direccion direccion )
    {
        m_direccion = direccion;
    }


    /**
     * Devuelve el Identificador de la {@link Estructura} que tiene dada de alta esta {@link Ubicacion}.
     * @return valor de 'idEstructura'.
     * @see Long
     */
    public Long getIdEstructura ()
    {
        return m_idEstructura;
    }

    /**
     * Establece el Identificador de la {@link Estructura} que tiene dada de alta esta {@link Ubicacion}.
     * @param idEstructura nuevo valor para 'idEstructura'.
     * @see Long
     */
    public void setIdEstructura ( final Long idEstructura )
    {
        m_idEstructura = idEstructura;
    }

    /**
     * Convierte este {@link Ubicacion} a su representación textual.
     *
     * @noinspection DuplicateStringLiteralInspection,HardCodedStringLiteral,HardcodedLineSeparator
     */
    public String toString ()
    {
        StringBuilder sb = new StringBuilder ();
        sb.append ( "<Instance Class = '" ).append ( this.getClass ().getCanonicalName () ).append ( "'>" );
        sb.append ( "<Super Class = '" ).append ( "com.psiqueware.alheli.alheli.BaseObject" ).append ( "'>" ).append ( super.toString () ).append ( "</Super>" );
        sb.append ( "<clave>" ).append ( m_clave ).append ( "</clave> " );
        sb.append ( "<descripcion>" ).append ( m_descripcion ).append ( "</descripcion> " );
        sb.append ( "<direccion>" ).append ( m_direccion ).append ( "</direccion> " );
        sb.append ( "<idEstructura>" ).append ( m_idEstructura ).append ( "</idEstructura> " );
        sb.append ( "</Instance>" );
        return sb.toString ();
    }
}

